/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ants;

import java.io.Serializable;
import java.util.*;

/**
 *
 * @author squirrel
 *
 * Esta clase contiene varias perspectives de las hormigas
 *
 */
public class AntsView implements Serializable {
    static final long serialVersionUID = -6528408920725778424L;
    public HashMap perspectiva;
    int actual;

    AntsView(Player jugador, Mapa m, int a) {
        actual = a;
        perspectiva = new HashMap();


        add_antList2_perspectiva(jugador.Player_ants_warriors, m);
        add_antList2_perspectiva(jugador.Player_ants_explorers, m);
        add_antList2_perspectiva(jugador.Player_ants_workers, m);

        /*
         * for (int i = 0; i < jugador.Player_ants_warriors.size(); i++) { Ant
         * ant = (Ant) jugador.Player_ants_warriors.get(i); Perspective nueva =
         * new Perspective(ant, m); perspectiva.add(ant.id, nueva);
         *
         *
         * int idExploradora = jugador.Player_ants_workers.get(i).id; int
         * idRecolectora = jugador.Player_ants_explorers.get(i).id;
         *
         * }
         */
    }

    void add_antList2_perspectiva(LinkedList hormigas, Mapa m) {
        for (int i = 0; i < hormigas.size(); i++) {
            Ant ant = (Ant) hormigas.get(i);
           // if(ant.id < 16)
             //   System.out.println("Hormiga con id: " + ant.id + "x: " + ant.place.x + " y: " + ant.place.y);
            Perspective nueva = new Perspective(ant, m);
            //Si la hormiga esta muerta, no se mueve. En caso de que si, se valida el movimiento.
            if(ant.muerta()){
                nueva.movil = false;
            }else{
                nueva.movil = validar_velocidad(actual, ant);    
            }
            perspectiva.put(ant.id, nueva);
        }


    }

    boolean validar_velocidad(int actual, Ant hormiga) {

        if (hormiga.last == -1) {
            return true;
        }
        switch (hormiga.type) {
            case Constantes.explorer_id:
                if (actual - hormiga.last >= Constantes.vel_explorers) {
                    return true;
                }
            case Constantes.worker_id:
                if (actual - hormiga.last >= Constantes.vel_workers) {
                    return true;
                }
            case Constantes.warrior_id:
                if (actual - hormiga.last >= Constantes.vel_warriors) {
                    return true;
                }
        }
        return false;
    }

    /*
     * void addPerspective(Perspective perro) { perspectives.add(perro); }
     *
     * LinkedList getPerspectives() { return perspectives; }
     */
}
